import request from "@/utils/request";
import { PAY_METHOD_ENUM } from "@/enums/conins/ConinsEnum";

const COINS_BASE_URL = "/api/v1/coinsRechargeRecodes";

const coinsAPI = {
  getPage(data?: CoinsRechargeRecordQuery) {
    return request<any, PageResult<CoinsRechargeRecodeVO[]>>({
      url: `${COINS_BASE_URL}/page`,
      method: "post",
      data,
    });
  },
  add(data: CoinsRechargeRecodeForm) {
    return request({
      url: `${COINS_BASE_URL}/add`,
      method: "post",
      data,
    });
  },
  delete(params) {
    return request({
      url: `${COINS_BASE_URL}/delete`,
      method: "get",
      params,
    });
  },
  getWebQrcode(params: PaymentOrderQuery) {
    return request({
      url: `/pay/recharge/adjust/pcQrcode`,
      method: "get",
      params,
    });
  },
  getByOutTradeNoApi(params: PaymentQueryForm) {
    return request({
      url: `/pay/recharge/regularly/getByOutTradeNo`,
      method: "get",
      params,
    });
  },
};

export default coinsAPI;

export interface CoinsRechargeRecodeVO {
  /** 主键ID */
  id: number;

  /** 类型: 1-充值, 2-退费 */
  type: 1 | 2;

  /** 付费商户ID */
  merchantUserId: number;

  /** 付费商户公司ID */
  companyId: number;

  /** 付费积分 */
  coins: number;

  /** 充值金额 (单位: 分) */
  amount: number;

  /** 第三方支付平台交易ID */
  transactionId: string;

  /** 充值状态: 0-初始化, 1-成功, 2-失败 */
  status: 0 | 1 | 2;

  /** 充值时间 (ISO 8601 格式的日期时间字符串) */
  rechargeTime: string;

  /** 退费操作用户 (可选) */
  applyUserId?: number;

  /** 备注 (可选) */
  remark?: string;

  /** 创建者 */
  createBy: string;

  /** 创建时间 (ISO 8601 格式的日期时间字符串) */
  createTime: string;

  /** 更新者 (可选) */
  updateBy?: string;

  /** 更新时间 (ISO 8601 格式的日期时间字符串, 可选) */
  updateTime?: string;

  /** 排序 (可选) */
  sort?: number;

  /** 录入类型: 1-手动, 2-银行充值 */
  enterType: 1 | 2;

  /** 充值凭证 (可选) */
  certificate?: string;
}

export interface CoinsRechargeRecordQuery {
  /** 页码 (必填), 示例: "1" */
  pageNum: number;

  /** 每页记录数 (必填), 示例: "10" */
  pageSize: number;

  /** 付费商户ID (可选) */
  merchantUserId?: string;

  /** 付费商户公司ID (可选) */
  companyId?: string;
  statusList?: [];
  beginTime?: "";
  endTime?: "";
}

export interface CoinsRechargeRecodeForm {
  /** 主键ID (可选) */
  id?: number;

  /** 类型: 1-充值, 2-退费 (必填) */
  type: 1 | 2;

  /** 付费商户ID */
  merchantUserId: number;

  /** 付费商户公司ID */
  companyId: number;

  /** 付费积分 */
  coins: number;

  /** 充值金额 (必填) */
  amount: number;

  /** 第三方支付平台交易ID */
  transactionId?: string;

  /** 充值状态: 0-初始化, 1-成功, 2-失败 */
  status: 0 | 1 | 2;

  /** 充值时间 (ISO 8601 格式) */
  rechargeTime?: string;

  /** 退费操作用户 (可选) */
  applyUserId?: number;

  /** 备注 (可选) */
  remark?: string;

  /** 创建者 */
  createBy: string;

  /** 创建时间 (ISO 8601 格式) */
  createTime: string;

  /** 更新者 (可选) */
  updateBy?: string;

  /** 更新时间 (ISO 8601 格式, 可选) */
  updateTime?: string;

  /** 排序 (可选) */
  sort?: number;

  /** 录入类型: 1-手动, 2-银行充值 */
  enterType: 1 | 2;

  /** 充值凭证 (必填) */
  certificate: string;
}

/** 用户视图信息 */
export interface ViewUser {
  userId: number /** 用户ID */;
  userTerminal: number /** 用户终端类型 */;
  username: string /** 用户名 */;
  nickname: string /** 用户昵称 */;
  markId: string /** 标识ID */;
  avatar: string /** 头像 */;
  mobile: string /** 手机号 */;
}

/** 商户公司信息 */
export interface MerchantCompanyVO {
  id: number /** 主键ID */;
  merchantUserId: number /** 用户ID */;
  applyUserId: number /** 审核人员ID */;
  subjectType: string /** 主体类型 */;
  mallNameId: number /** 商圈ID */;
  mallName: string /** 商圈名称 */;
  businessLicenseFile: string /** 营业执照文件路径 */;
  unifiedSocialCredit: string /** 统一社会信用代码 */;
  companyName: string /** 公司名称 */;
  businessAddress: string /** 营业地址 */;
  licenseValidity: string /** 营业执照有效期 */;
  legalRepresentative: string /** 法人代表姓名 */;
  idCardFrontFile: string /** 法人代表身份证正面文件路径 */;
  idCardBackFile: string /** 法人代表身份证反面文件路径 */;
  idNumber: string /** 身份证号 */;
  idCardValidity: string /** 身份证有效期 */;
  brandAuthorizationFile: string /** 商标或品牌授权文件路径 */;
  legalAuthorizationFile: string /** 法人授权书文件路径 */;
  qualificationProofFile: string /** 资质证明文件路径 */;
  businessPermitFile: string /** 经营许可文件路径 */;
  businessContactName: string /** 业务负责人姓名 */;
  businessContactPhone: string /** 业务负责人手机号 */;
  status: number /** 审核状态 */;
  createBy: string /** 创建者 */;
  createTime: string /** 创建时间 */;
  updateBy: string /** 更新者 */;
  updateTime: string /** 更新时间 */;
  remark: string /** 备注 */;
  coins: number /** 付费积分 */;
}

/** 商户公司首页信息 */
export interface MerchantCompanyIndexVO {
  id: number /** 主键ID */;
  companyId: number /** 公司ID */;
  logo: string /** 公司LOGO */;
  indexImage: string /** 主页图片 */;
  introduce: string /** 服务亮点 */;
  skilledHouseLayout: string /** 擅长户型 */;
  skilledHouseLayoutText: string;
  serviceRange: string /** 服务范围 */;
  serviceRangeText: string;
  decorationType: string /** 装修类型 */;
  decorationTypeText: string;
  skilledStyle: string /** 擅长风格 */;
  skilledStyleText: string;
  priceRange: string /** 价格范围 */;
  priceRangeText: string;
  manageRange: string /** 经营范围 */;
  manageRangeText: string;
  manageBrand: string /** 经营品牌 */;
  manageBrandText: string;
  address: string /** 地址 */;
  longitude: string /** 经度 */;
  latitude: string /** 纬度 */;
  createBy: string /** 创建者 */;
  createTime: string /** 创建时间 */;
  updateBy: string /** 更新者 */;
  updateTime: string /** 更新时间 */;
  remark: string /** 备注 */;
  bPartnerBySelf: number /** B端渠道合伙人 */;
  bPartnerBySenior: number /** B端高级合伙人 */;
  coins: number /** 付费积分 */;
}

/** 充值记录信息 */
export interface CoinsRechargeRecodeVO {
  id: number /** 主键ID */;
  type: number /** 交易类型 */;
  merchantUserId: number /** 付费商户ID */;
  viewUser: ViewUser /** 用户信息 */;
  companyId: number /** 付费商户公司ID */;
  merchantCompanyVO: MerchantCompanyVO /** 商户公司信息 */;
  merchantCompanyIndexVO: MerchantCompanyIndexVO /** 商户公司首页信息 */;
  amount: number /** 充值金额 */;
  transactionId: string /** 第三方支付平台交易ID */;
  status: number /** 充值状态 */;
  rechargeTime: string /** 充值时间 */;
  applyUserId: number /** 退费操作用户 */;
  remark: string /** 备注 */;
  createBy: string /** 创建者 */;
  createTime: string /** 创建时间 */;
  updateBy: string /** 更新者 */;
  updateTime: string /** 更新时间 */;
  sort: number /** 排序 */;
  enterType: number /** 录入类型 */;
  certificate: string /** 充值凭证 */;
}

/** 充值记录数据 */
export interface DataCoinsRechargeRecodeVO {
  data: CoinsRechargeRecodeVO /** 充值记录 */;
  list: CoinsRechargeRecodeVO[] /** 充值记录列表 */;
  total: number /** 总数 */;
}

/**
 * 支付订单查询参数
 */
export interface PaymentOrderQuery {
  /** 金额:以元为单位 */
  amount?: string;

  /** 订单标题 */
  subject?: string;

  /** 支付方式:1支付宝;2微信 */
  type?: string;
}

/**
 * 支付 - 订单查询参数表单
 */
export interface PaymentQueryForm {
  /** 支付方式: 1 - 支付宝；2 - 微信 */
  type?: number;

  /** 商户交易订单号 */
  outTradeNo?: string;
}
